1. Field of the Invention
This invention generally relates to signal communication and processing and, more particularly, to a system and method for parallely recalculating the syndromes of forward error corrected signals.
2. Description of the Related Art
The bytes in serial communication streams are often interleaved to prevent errors due to relatively long bursts of noise. ITU-T Recommendation G.975. 1, Forward error correction for high bit-rate dense wavelength division multiplexing (DWDM) submarine systems, is one example of a standardized interleaved forward error correction (FEC) code. Proprietary telecommunication optical transport network (OTN) framers also use forward error correction interleaved codes.
FIG. 1 is diagram depicting a forward error correction (FEC) interleaving scheme using inner and outer codewords (prior art). Although there are any number of possible methods for interleaving FEC codes, the general method for nesting codes is to protect one or more code words (called the inner code) by encoding it's contents within the information portion of one or more additional codewords (called the outer code). This nesting operation may be performed any number of times resulting in any number of nesting levels.
FIG. 2 is a schematic block diagram depicting an FEC pipeline for inner/outer encoding and decoding (prior art). One method for encoding data to be FEC protected is to pass such data to an initial inner encoder. Once the data is encoded and parity check data has been added to the original data, both the data and parity are passed to a second outer encoder. The inner data and parity may or may not be reorganized and redistributed before being passed to the outer encoders. The outer encoder then calculates and adds additional parity check data to protect the inner code's data and parity. These steps may be repeated any number of times to generate any number of codeword nesting levels. The distribution of data from inner codewords within outer codewords is arbitrary and is usually dependent on the desired application in question.
Decoding nested codeword reverses the steps implemented in the encoding pipeline. Encoded data is received and passed to an outer decoder which calculates the syndromes of incoming codewords. The decoder determines if errors have occurred and proceeds to locate and correct data errors from the initially calculated syndrome values. At this point, the data may still contain errors if the data was corrupted beyond the correction capability of the outer FEC code. However, these errors may still be correctable by the inner decoder. After disinterleaving, the data is passed to the inner decoder, which attempts to correct errors by standard syndrome calculation and error location. Optionally, the data may be reinterleaved and be repeatedly decoded through inner and outer decoders. Whether with additional discrete decoders, or by feeding the output of the inner decoder back into the outer decoder, this data may be iteratively decoded through a chain or pipeline of FEC decoders. While the steps of iteratively decoding increases the likelihood of recovering correct data, it comes at a cost in processing time.
It would be advantageous if encoding-nested codewords could decoded in parallel at all levels of nesting to reduce latency.
It would be advantageous if codeword decoding could be implemented using only initially calculated and readjusted codeword syndromes, without further manipulation of the original received data after the initial syndrome calculation. It would be advantageous if data could be stored in a memory device and accessed only when error correction was deemed necessary.